import React from 'react';

// 为什么说组合优于继承???

interface IProps {}

class Person extends React.Component {
  constructor(props: IProps) {
    super(props);
    console.log('hello , i am person');
    this.state = {
      name: 'person',
    };
  }
  componentDidMount() {
    console.log('Person componentDidMount');
  }
  eat() {
    console.log('Person eat');
  }
  render() {
    return <div>大家好，我是一个person</div>;
  }
}

class Programmer extends Person {
  constructor(props: IProps) {
    super(props);
    console.log('hello , i am Programmer too');
    this.state = {
      ...super.state,
      age: 10,
    };
  }

  componentDidMount() {
    console.log(this.state);
    super.componentDidMount();
    // 自己的eat方法
    this.eat();
    // 父类 Person 的 eat方法
    super.eat();
  }
  eat() {
    console.log('Programmer eat');
  }
  code() {
    console.log('Programmer code');
  }
  render() {
    return (
      <div style={{ marginTop: '50px' }}>
        {super.render()} {/* 让 Person 中的 render 执行 */}
        我还是一个程序员！ {/* 添加自己的内容 */}
      </div>
    );
  }
}

export default Programmer;
